home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Development Platforms / Apple II / Essentials / GSBug / GSBug.Specs < prev    next >
Encoding:
Text File  |  1991-10-11  |  24.1 KB  |  692 lines  |  [TEXT/pdos]

  1.  
  2. GSBug -- Current Version 1.6b21
  3.  
  4.  
  5.  
  6. Version 1.6b21 (DAL)
  7.  
  8. Fixed OSBreaks to work correctly if you set more than one (broken in b17-20).
  9.  
  10. By the way, here is the format for imbedded procedure names (added in b18):
  11.           BRL Skip
  12.           $71 $77
  13.           Name (with leading length byte)
  14.        Skip ...
  15.  
  16. Typically you will want to use a macro to conditionally put names in the
  17. object.
  18.  
  19.  
  20. Version 1.6b20 (DAL)
  21.  
  22. Added new GS/OS call name SetStdRefNum, call number $203A.
  23.  
  24. Fixed the version string so it doesn't say "Apple Confidential."
  25.  
  26.  
  27. Version 1.6b19 (DAL)
  28.  
  29. To automatically load a templates file at boot time, it must be named
  30. GSBug.AutoTemp  (in the System.Setup folder).
  31.  
  32. If you use LoadTemp without a pathname, it still defaults to GSBug.Templates.
  33.  
  34.  
  35. Version  1.6b18 (DAL)
  36.  
  37. Versions with 6.0 stuff included are now 1.6bxx; without 6.0 stuff is still
  38. 1.5bxx.
  39.  
  40. LoadTemp command no longer returns a bogus error after successfully loading a
  41. templates file.  Also, if you type LoadTemp with no pathname, it uses
  42. */System/System.Setup/GSBug.Templates.
  43.  
  44. Turned off high bits on the GSBug.Setup file pathname, so you don't get a
  45. strange error while booting from an AppleShare server.
  46.  
  47. KNOWN BUG:  Don't put a breakpoint on an imbedded name.  If you do, the
  48. name can get overwritten when the breakpoint is removed.
  49.  
  50.  
  51. Version 1.5b17 (DAL)
  52.  
  53. Now supports inline imbedded procedure names (as generated by the name and
  54. procname macros in M16.Debug, for example).  These show up in disassembly and
  55. as  the operands of JSRs and JSLs.
  56.  
  57. OSBreaks trigger regardless of call class now.  For example, you can SetOSBrk
  58. for either Open or OpenGS, and either one will cause a break.
  59.  
  60. Changed named-resource call names to begin with RM (RMLoadNamedResource,
  61. etc).
  62.  
  63. When GSBug notices a toolbox call being made in other than full 16-bit mode,
  64. it  displays a a warning dialog (using TLTextMountVolume).  Hitting ESC at
  65. that dialog cancels future warnings until you reload GSBug.
  66.  
  67. When GSBug notices a toolbox call being made with Decimal mode on, it stops
  68. cold at  a BRK $F8, rather than letting things get completely baked before
  69. crashing.
  70.  
  71. Fixed one old reference to $010100 to store $C0 instead of $80.  Interrupts
  72. should reliably use $100..1C0 for stack space now.
  73.  
  74. Added 5 blanks to end of 'TRACE ' message so it completely overwrites the
  75. 'SINGLE STEP' message.
  76.  
  77.  
  78. Version 1.5b16 (DAL)
  79.  
  80. No such thang.
  81.  
  82.  
  83. Version 1.5b15 (DAL)
  84.  
  85. Option-space now works reliably to bypass a memory-protect range, including
  86. a tool call.  (This is an old feature, but keyboard translation normally
  87. prevented it from working!)
  88.  
  89. In trace mode, Space and ESC now kill "awainting RTx" mode.
  90.  
  91. Fixed "n" command so it won't crash if nobody has called DebugSetHook.
  92.  
  93. Having tool breaks on calls which get made indirectly by GSBug no longer
  94. cause a crash.  You can break on NewHandle now, for example.
  95.  
  96. In Breakpoint subscreen, Space maps trigger count from 0 to 1 and from
  97. nonzero to zero.  Tab moves between the address and count fields (easier
  98. than hitting arrows).
  99.  
  100. In the memory-protect subscreen, Tab moves between columns.
  101.  
  102. Added $01/FC00.FFFF (OS system service calls) to the memory protect list.
  103.  
  104. Changed the default trace-window setting to center-screen.
  105.  
  106. Changed the EmulStack value from $80 to $C0 (trying to get rid of some
  107. unpredictable crashes, probably caused by AppleTalk running out of stack
  108. space).  This means you can safely trace a program while the stack is in
  109. the $01C1..01FF range, and that interrupts use $0100..01C0.
  110.  
  111. GSBug now takes a whole bank, minimizing its effect on where things are
  112. located in memory relative to each other, and ensuring that tool breaks work
  113. reliably (tool calls never break if they come from the same bank the debugger
  114. is in).
  115.  
  116. Note that templates do work; you can ignore the garbage error you still get
  117. from loadtemp.
  118.  
  119.  
  120. Version 1.5b14 (DAL)
  121.  
  122. Versions 1.5b12 and b13 were never officially released.  1.5b14 is fine,
  123. except that I make no guarantees about the Template commands.  I think they
  124. work, but you'll get a funky error message from loadtemp.
  125.  
  126. When you let a JSL execute in real time (including a tool call), the debugger
  127. temporarily changes the owner ID of its own handle to match the owner of the
  128. handle containing the code you're debugging.  This way MMStartUp returns the
  129. appropriate memory ID, instead of always returning the debugger's ID.
  130.  
  131. DebugSetHook(nil) now removes the hook.
  132.  
  133. The 1K bank 0 segment GSBug allocates now has the same ID as the debugger (was
  134. previously always $80xx).
  135.  
  136. Fixed OS breaks to work after return from ProDOS 8 (added a Notify Proc to
  137. re-trap the OS vectors).
  138.  
  139. Changed the "_" command so that if you don't type a number, it's like typing
  140. zero.  For example, if you have a template called "Template" which displays an
  141. informational message, you can type "_Template" instead of "_Template 0".
  142.  
  143. DP:xxx command dumps 16 bytes from DP to the command line.
  144.  
  145. Tool call $0CFF DebugGetInfo(word):long.  Word=0 returns the current value of
  146. the program counter (useful from a procedure called by the N command).
  147.  
  148. Note that real-time counted breakpoints don't work for JMP() ($6C), JMP(,X)
  149. ($7C), JML() ($DC), and JSR(,X) ($FC).
  150.  
  151. With Monte's help, located the misplaced CLI that was causing the X command
  152. used on a JSR to accidentally return with the Bank register set to the
  153. debugger's bank, and the Stack set to the Interrupt-time stack.
  154.  
  155.  
  156. Version 1.5b11 (DAL)
  157.  
  158. You can use SetOSBrk and ClrOSBRK with call names now.  Class-1 names all end
  159. in GS to distinguish them from their class-0 siblings.  Examples:
  160.  
  161.     SetOSBrk #1
  162.     SetOSBrk _Create
  163.     SetOSBrk #2001
  164.     SetOSBrk _CreateGS
  165.  
  166.  
  167. The debugger now changes its own handleUs memory ID during a real-time JSL to
  168. match the code being stepped.  For example, now you can step over an MMStartUp
  169. and get the expected ID returned (the application's instead of the
  170. debugger's).
  171.  
  172. Changed 'D' command to 'I' so it doesn't interfere with typing a hex number
  173. that starts with a D.  The I command toggles the 'ignore REP/SEP instructions
  174. mode' when disassembling.
  175.  
  176. Changed parsing for the P (Print screen) command so that it just beeps if
  177. there are any characters after the P.  (Typing 'put' intead of 'out' can no
  178. longer hang your system.)
  179.  
  180. Put the help screen for MP mode back in.
  181.  
  182. The solid flashing cursor in MEM, MP, and BP no longer flashes.  In exchange
  183. for this, special characters (like braces) that happen to be in Inverse don't
  184. flash while you're in the subscreens.
  185.  
  186. Added pseudo tool call $0BFF=DebugSetHook (one Long parameter).  The N
  187. ("neat- o") command calls this hook.
  188.  
  189. Removed a conditional hard-coded increment of $004002 when X-ing a JSR.
  190.  
  191. Added REP #$30 on the two tool-dispatcher-intercept routines.  Making tool
  192. calls in other than full native mode is still not a good idea.
  193.  
  194. Fixed real-time breakpoints for most 1-byte instructions and all 16-bit load
  195. immediate instructions.  Previously, they crashed when used with a count
  196. greater than one.
  197.  
  198. Please note that */System/System.Setup/GSBug.Setup is *already* loaded
  199. automatically (has been for quite a while).
  200.  
  201.  
  202. Version 1.5b10 (DAL)
  203.  
  204. Stepping in emulation mode should be much more reliable now, although it
  205. isn't perfect (in particular, one place where there's a window of
  206. vulnerability is using X on a JSR in emulation mode, but if you have the
  207. I bit set in your P register there's no problem).
  208.  
  209. Having the stack in $01xx works much better now, whether you're in emulation
  210. or not.  This works by frequently stuffing a $80 into $01/0100 (EMULSTACK,
  211. the location the interrupt manager and other things used to set the $01xx
  212. stack when needed).
  213.  
  214. If you trace code that actually uses the $01/0100 value to set the stack
  215. pointer, you still have a problem, since your program will start using the
  216. part of the stack that gets toasted on every interrupt.
  217.  
  218. You can now type in GSBug even if the Event Manager is on but keyboard
  219. interrupts are off.  Previously this would leave you dead in the water.
  220.  
  221. Files created with CSave now have a real filetype/auxtype assignment
  222. ($5A/0005).
  223.  
  224. Fixed DebugStr to return no error (previously it was returning the high two
  225. bytes of the caller's address as an error).
  226.  
  227. Took out code that was checking $C020 (not SLOTREG at $C02D) to see if the
  228. printer slot was switched in.  Makes no sense anyway, because a printer can
  229. legitimately be either an internal or external slot.
  230.  
  231. Brought the list of Toolbox call names up to date for System Software 5.0.3
  232. (see changes below).
  233.  
  234. Added tool set names (for example, $0002 is Memory Manager).  For some time,
  235. you've been able to use SetTBrk with a tool set number, to force a break on
  236. every call to that tool set.  Now you can do it by name, too.
  237.  
  238. Examples:
  239.     SetTBrk #2
  240.     SetTBrk _Memory Manager
  241.     ShowBrks
  242.  
  243. Saved about 900 bytes by removing many extra copies of the string "Unknown".
  244.  
  245. Obsolete call names removed:
  246.  
  247. 1522    TEInsertPageBreak
  248. 2022    TEGetHooks
  249. 2122    TESetHooks
  250. 2222    TEGetDefProc
  251.  
  252. Call names corrected:
  253.  
  254. 0D02    RemoveFromOOMQueue
  255. 2115    SelectIText
  256. 1021    VDKeyGetKRCol
  257. 1121    VDKeyGetKGCol
  258. 1221    VDKeyGetKBCol
  259.  
  260. Call names added:
  261.  
  262. 3603    ReleaseROMResource  3703    ConvSeconds     010A    SANEBootInit
  263. 020A    SANEStartUp         030A    SANEShutDown    040A    SANEVersion
  264. 050A    SANEReset           060A    SANEStatus      090A    FPNum
  265. 0A0A    DecStrNum           0B0A    ElemNum         5D0E    TaskMasterContent
  266. 5E0E    TaskMasterKey       1713    GetDeviceName   1813    PrGetPrinterSpecs
  267. 1913    PrDevPrChanged      1A13    PrDevStartup    1B13    PrDevShutDown
  268. 1C13    PrDevOpen           1D13    PrDevRead       1E13    PrDevWrite
  269. 1F13    PrDevClose          2013    PrDevStatus     2113    PrDevAsyncRead
  270. 2213    PrDevWriteBackground 3013    PrDevIsItSafe  2022    TEOffsetToPoint
  271. 2122    TEPointToOffset     2222    TEGetDefProc    2322    TEGetRuler
  272. 2422    TESetRuler          2522    TEScroll        2622    TEGetInternalProc
  273. 2722    TEGetLastError      2822    TECompactRecord
  274. 0123    MSBoot              0223    MSStartUp       0323    MSShutDown
  275. 0423    MSVersion           0523    MSReset         0623    MSStatus
  276. 0923    SetBasicChan        0A23    SetMIDIMode     0B23    PlayNote
  277. 0C23    StopNote            0D23    KillAllNotes    0E23    SetRecTrack
  278. 0F23    SetPlayTrack        1023    TrackToChan     1123    Locate
  279. 1223    SetVelComp          1323    SetMIDIPort     1423    SetInstrument
  280. 1523    SeqPlayer           1623    SetTempo        1723    SetCallBack
  281. 1823    SysExOut            1923    SetBeat         1A23    MIDIMessage
  282. 1B23    LocateEnd           1C23    Merge           1D23    DeleteTrack
  283. 1E23    SetMetro            1F23    GetMSData       2023    ConvertToTime
  284. 2123    ConvertToMeasure    2223    MSSuspend       2323    MSResume
  285. 2423    SetTuningTable      2523    GetTuningTable  2623    SetTrackOut
  286. 2723    StartMIDIDriver     2823    StopMIDIdriver  04FF    DebugVersion
  287. 06FF    DebugStatus         09FF    DebugStr        0AFF    SetMileStone
  288.  
  289.  
  290. Tool Set Names  (You can use these with SetTBrk.)
  291.  
  292. 0001    Tool Locator
  293. 0002    Memory Manager
  294. 0003    Misc Tools
  295. 0004    QuickDraw
  296. 0005    Desk Manager
  297. 0006    Event Manager
  298. 0007    Scheduler
  299. 0008    Sound Tools
  300. 0009    ADB
  301. 000A    SANE
  302. 000B    Integer Math
  303. 000C    Text Tools
  304. 000E    Window Manager
  305. 000F    Menu Manager
  306. 0010    Control Manager
  307. 0011    Loader
  308. 0012    QuickDraw Aux
  309. 0013    Print Manager
  310. 0014    Line Edit
  311. 0015    Dialog Manager
  312. 0016    Scrap Manager
  313. 0017    Standard File
  314. 0019    Note Synth
  315. 001A    Note Seq
  316. 001B    Font Manager
  317. 001C    List Manager
  318. 001D    ACE
  319. 001E    Resource Manager
  320. 0020    Midi
  321. 0021    Video Overlay
  322. 0022    Text Edit
  323. 0023    MIDI Synth
  324. 00FF    Debugger
  325.  
  326.  
  327. GS/OS Call Names
  328.  
  329. Brought the list of GS/OS call names up to date for System Software 5.0.3.
  330.  
  331. Removed this call:
  332. $000E   ExpandPath (becuase there's no class-0 version)
  333.  
  334. Added these class-1 call names:
  335.  
  336. $2029   Quit
  337. $2033   FSTSpecific
  338. $2034   AddNotifyProc
  339. $2035   DelNotifyProc
  340. $2036   DRename
  341. $2037   GetStdRefNum
  342. $2038   GetRefNum
  343. $2039   GetRefInfo
  344.  
  345.  
  346. What It Doesn't Do Yet
  347.  
  348. Note--sometimes the debugger gets mysteriously disconnected from the
  349. Apple-Ctl-ESC vector.  If you can reproduce this, let me know.
  350.  
  351. Some of the help screens are incompelete or inaccurate.
  352.  
  353. Templates currently limited to 64K.  If template file >64K, it gets left open
  354. by accident.
  355.  
  356. Breakpoints don't work quite right in bank-switched memory, either (it doesn't
  357. store the original instruction into the right bank?).
  358.  
  359. Should show OS call names on a JSL $E100B0 (examine stack if stepping, and
  360. look for a PEA $xxxx in a disassembly).
  361.  
  362. The debugger chains into the tool-dispatcher vectors its own way.  It should
  363. use the standard method defined in GS Technical Note #87.
  364.  
  365. Will implement pseudo Tool calls to set and clear debugger breakpoints under
  366. program control.
  367.  
  368. May make the MEM locations labelable (and save labels in the config file).
  369.  
  370. "Handle" template partially implemented?
  371.  
  372. Unload should call UserShutDown on self (under ProDOS 8, just beep instead).
  373.  
  374. Make sure that "\" for changing display modes is documented.
  375.  
  376.  
  377. Documentation
  378.  
  379. The GSBug manual from APDA of 3/16/89 seems to be the latest there is.  All
  380. features not covered there should be in these release notes.
  381.  
  382.  
  383. History
  384.  
  385.  
  386. This part of the document details all changes made to the debugger from
  387. version 1.3b1 to 1.5b8.
  388.  
  389.  
  390. Bug Fixes:
  391.  
  392. Real Time Tool Breaks - The mechanism for using tool breaks real time has
  393. been modified, the old method never worked quite right, what used to happen
  394. was that when a tool break was to occur, the stub in the dispatch vector
  395. would simply jump into the debugger, this would cause the stack and processor
  396. not to be set as if they came from an interupt, and the next exit of the
  397. debugger would cause code execution to start at an inapropriate case, also
  398. the actual tracing of a tool break would also cause the debugger to
  399. improperly save the current registers, so that the stack/direct page and
  400. processor status might come back damaged from a tool break. The stub has
  401. been modified to now enter the debugger with a break instruction instead
  402. of jumping to the front. This seems to solve all real time tool break
  403. problems.
  404.  
  405.  
  406. Error tool breaks - These also did not work well, and did not seem to be
  407. used by anyone anyway, so they have been removed to make room for OSBreaks.
  408.  
  409.  
  410. Version 1.5b3:
  411.  
  412. % display code was fixed so that the '*' would properly be displayed in
  413.   front of any toolbox glue that is detected.
  414.  
  415. % Fixed template data display so that if the data being displayed crosses
  416.   a bank boundry, the data is properly followed into the new bank.
  417.  
  418. % Modified the IN command so that it respects trigger counts of 0 and does
  419.   not insert real time breaks.
  420.  
  421.  
  422. Version 1.5b5:
  423.  
  424. % Added Glue tool break support. Now toolbreaks work for regular and glue
  425.   tool breaks. ErrorBreaks do not work for glue as they do not make a lot
  426.   of sense.
  427.  
  428. % Made debugger work even when a DA window is open. See new features below.
  429.  
  430. % Added keyClick so that you hear whenever the system draws a key from the
  431.   event queue. Also, cleaned up some comments.
  432.  
  433.  
  434. Version 1.5b6:
  435.  
  436. % Added new DebugStr toolcall that can be used to get more from the debugger.
  437.  
  438.  
  439. Version 1.5b7:
  440.  
  441. % Added support for real time conditional breaks.
  442.  
  443. % Added OSBreaks.
  444.  
  445. % Fixed the Debugger tool calls (like DebugStr ) so that they use the proper
  446.   tool numbers (they had the toolset number in the high byte instead of the
  447.   low byte) Documentation for them should also be right.
  448.  
  449.  
  450. Version 1.5b8:
  451.  
  452. % Added a debugger version and status call to the debugger tools.
  453.  
  454. % Enhanced the OSBreak facility.
  455.  
  456. % Removed the keyclicks because Dave complained.
  457.  
  458.  
  459. Version 1.5b9:
  460.  
  461. % Fixed some bugs.
  462.  
  463.  
  464. New Features:
  465.  
  466. DebugStr:
  467.  
  468. This feature is designed to allow developers to better know where in their
  469. program the debugger was entered. The way this feature works is that if you
  470. want to enter the debugger programatically you can now also pass a string to
  471. the debugger which will be printed on the bottom line of the screen when the
  472. debugger is entered.
  473.  
  474. The way this mechanism works is a fake tool call that the debugger now
  475. supports. Since this looks like a normal tool call it can be easily called
  476. by any high level language as well as by assembly language.  This toolcall
  477. called DebugStr takes a single parameter, a pointer to a pascal string. When
  478. the tool call is made the debugger is entered as if you had put a break
  479. into your code, but the string you passed is displayed on the screen and
  480. the program counter has been bumped passed the tool call jsl. This way you
  481. can simply resume execution with two simple keystrokes (with the init
  482. version hit 'R' <return>).
  483.  
  484. Calling this new feature might look something like this
  485.  
  486.         PushLong #DebugStr
  487.         ldx #$09FF
  488.         jsl >$E10000
  489.  
  490.     ...
  491.  
  492. DebugStr    str 'You are about to do blah.'
  493.  
  494.  
  495. from pascal the same would be achieved by doing this...
  496.  
  497.         DebugStr('You are about to do blah.');
  498.  
  499.  
  500. I would recommend that assembly language users use a macro to make the
  501. toolcall and call it _DebugStr.  MPW IIGS Pascal users could use the
  502. following to define the debugstr routine:
  503.  
  504.     Procedure DebugStr(theString:str255);
  505.         INLINE $09FFA2, $E1000022;
  506.  
  507.  
  508. This call will also work when being called via the glue vector.
  509. NOTE: Since this call is only available when the debugger is loaded you
  510. will ALWAYS want to be sure to remove ALL calls to the debugger before
  511. releasing your program (or even using it on machines that do not have a
  512. debugger installed).
  513.  
  514.  
  515. SetMileStone:
  516.  
  517. SetMileStone operates exactly the same way as debugstr except that the
  518. debugger is not actually entered. This will allow tracking of random
  519. crashes by allowing you to call the SetMileStone routine with milestones
  520. that have been met. Any time the debugger is entered via a BRK instruction
  521. or thru the keyboard, the last string passed via the SetMileStone call will
  522. be displayed. The toolcall number for SetMileStone is $0AFF, the  MPW IIGS
  523. Pascal interface might look like this:
  524.  
  525.  
  526.     Procedure SetMileStone (theString:str255);
  527.         INLINE $0AFFA2, $E1000022;
  528.  
  529.  
  530. DebugVersion, DebugStatus:
  531.  
  532. These calls are added so that an application can identify the version of the
  533. debugger that is loaded and thus know what calls can be made to the debug
  534. tool. Currently, these calls are identical and return the same result. The
  535. DebugStatus call returns non-zero for true (as opposed to $FFFF which most
  536. people might want...) other than that these calls act the same as any other
  537. toolbox status or version call, each call requires a word space on the stack
  538. for the result which is on the top of the stack when the call completes. If
  539. a debugger is loaded that does not support this feature you will get a
  540. standard tool locator error. For version 1.5b8 the version number returned
  541. is $158F .As you might expect, this number will change as the debugger
  542. version changes and it will always go up, never down.
  543.  
  544.  
  545.  
  546. Glue Snypher:
  547.  
  548. Glue snypher is a routine that can recognize high level language tool calls
  549. that are made with the standard glue entry, when a call to glue is detected
  550. while disassembling an instruction the call to glue will be replaced with
  551. *_TooName in a manner similar to how real tool calls now work. Glue snypher
  552. is also used by the memory protect feature, if a glue call is detected
  553. while the standard toolbox memory protect range is on, the glue call will
  554. be treated as if it were a JSL >$e10000.  All glue entries MUST be a JSL
  555. to one of 3 standard types of glue that are shown below:
  556.  
  557. ToolGlueType1   LDX #$ToolNum
  558.     JSL >$E10004
  559.     ...
  560.     RTL
  561.  
  562.  
  563. ToolGlueType2   LDX #$ToolNum
  564.     JML CommonCall
  565.     ...
  566. CommonCall  JSL >$E10004
  567.     ...
  568.     RTL
  569.  
  570.  
  571. ToolGlueType3   LDX #$ToolNum
  572.     JMP CommonCall
  573.  
  574. If any other types of glue calls are used, they will not be properly detected.
  575.  
  576. Glue Breaks:
  577.  
  578. In addition to glue snypher further support was added for high level
  579. languages by extending the tool break support to the glue vector ($E10004).
  580. Since error conditions are treated differently with glue (The second RTL
  581. ain't mine no more...) it seems unreasonable to also support error breaks
  582. via the glue vector.
  583.  
  584.  
  585.  
  586. OSBreaks:
  587.  
  588. OSBreaks work very much the same way that tool breaks work with three
  589. exceptions. First, instead of breaking on a tool call they will break on
  590. a call to the OS. Next, you can NOT specify an OS break by name, only by
  591. number. Lastly, they are not supported in trace mode, only in real time
  592. mode.  To use OSBreaks you simply type setOSBrk #xxxx where xxxx is the
  593. number of the OS routine that you want to break on. This number is matched
  594. exactly when an OS call is made, so if you do not know if the target call
  595. is class 0 or class 1 you must set the break for both calls. OSBreaks are
  596. supported via both vectors, inline and stackbased. The following is a
  597. list of commands that operate on OS breaks and what they do.
  598.  
  599. SetOSBrk - adds a number to the OS break list
  600. ClrOSBrk - Removes a given number from the OS break list
  601. ClrAllOSBrk - Removes all numbers from the OS break list
  602. OSBrkIn - enables real time scanning for OS breaks
  603. OSBrkOut - disables real time scanning of OS breaks
  604. ShowBrks - lists all tool and OS breaks currently set.
  605.  
  606.  
  607.  
  608. DA Debugging support:
  609.  
  610. In the past it has always been difficult to debug certain new desk
  611. accessories because they accept keystrokes, and keep the debugger from
  612. receiving them. I have added a patching mechanism to the system event
  613. call that is installed when the debugger is installed that fixes this
  614. problem. The way this feature now works is that if the caps lock key is
  615. down no keyboard events get passed to system event (and then to any open
  616. DA's) and the debugger will always get them. A side effect of this is that
  617. when the debugger screen is not active applications will get the same
  618. keystroke events if the CAPS LOCK key is down. As a gentle reminder of
  619. this feature, when installed, it will make your GS speaker click whenever
  620. a key is processed by getNextEvent.  The debugger used to click on every
  621. keystroke, regardless of the state of the CAPS LOCK key.  Dave complained
  622. enough that the debugger was changed to only click when keys are pressed
  623. if the CAPS LOCK key is down.
  624.  
  625.  
  626.  
  627. New Template types:
  628.  
  629. We have added support for a few more data types in templates, these are
  630. mainly for use with GS/OS strings, but can also be used for any word
  631. length string. they are:
  632.  
  633.     InputStr:   This type will read the next word of data and treat it as
  634.                 a length word for string data that follows. The entire
  635.                 contents of the string will be displayed.
  636.  
  637.     OutputStr:  Similar to InputStr except that the first word is a buffer
  638.                 length and the second word is the string length. After the
  639.                 string is displayed the debugger will skip to the end of
  640.                 the buffer to find the next byte of data to process.
  641.  
  642.  
  643. RealTime Conditional Breakpoints:
  644.  
  645. The debugger now supports conditional real time breakpoints. In the past
  646. when a breakpoint was entered in the breakpoint list and you used the IN
  647. feature to make them work real time, the trigger count that you entered
  648. was ignored. Now, If you the trigger count is supported the same way it is
  649. supported in trace mode, that is, if you insert a real time breakpoint
  650. with a count higher than 1 it will break on the Nth execution of the
  651. opcode at that location. NOTE: Currently the following opcodes are not
  652. supported as real time conditional breakpoints: JSL(mem), JSR(mem),
  653. JSR(mem,x), JMP(mem), JMP(mem,x), RTI.
  654.  
  655. In addition to supporting a count value for real time break points, the
  656. debugger now also allows a simple conditional statement to be used instead.
  657. The debugger allows only one conditional statement at a time, but as many
  658. of the breakpoints can use it as you want. To enable the conditional
  659. statement (henceforth called IF) simply type an "i" when entering a
  660. breakpoints trigger value instead of a hex digit. To set the current IF
  661.  
  662. use the command SetIF. the syntax of the SetIF command is as follows:
  663.  
  664.     SETIF {width} {Spec1}{Operator}{Spec2}
  665.  
  666. Legal {width} values
  667.      W  for word
  668.      B  for byte
  669.  
  670.  
  671. Legal {Operator} values
  672.     =   for is equal to
  673.     #   for is NOT equal to
  674.     <   for is less than
  675.     >   for is Greater than or equal to
  676.  
  677.  
  678. Legal {Spec1} and {Spec2} values are
  679.     A,X,Y,S,D,P,B   for the corresponding register
  680.     $BBXXXX     as the address of a value in memory
  681.     #$XXXX      as a hexidecimal constant ({SPEC2} only)
  682.  
  683.  
  684. Some examples of IFs
  685.  
  686.     SETIF W A<#$0101        (Break if the word in <A> is less than #$0101)
  687.  
  688.     SETIF B $021234=$034321 (Break if the bytes at $02/1234 and $03/4321
  689.                              are the same.)
  690.  
  691. NOTE: Currently only long addresses are supported.
  692.